package com.huike.clues.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huike.clues.domain.SysDictData;
import com.huike.clues.domain.dto.SysDictDataAddDTO;
import com.huike.clues.domain.dto.SysDictDataQueryDTO;
import com.huike.clues.domain.result.PageResult;
import com.huike.clues.mapper.SysDictDataMapper;
import com.huike.clues.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

@Service
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
    @Autowired
    private SysDictDataMapper sysDictDataMapper;
    /**
     * 根据字典类型查询字典数据信息
     *
     * @param dictType 字典类型
     * @return 字典数据集合
     */
    @Override
    public List<SysDictData> saveType(String dictType) {
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysDictData::getDictType, dictType);
        return this.list(queryWrapper);
    }

    /**
     * 据字典类型分页查询字典数据列表
     *
     * @param dto 接收到的参数
     * @return 封装好返回的数据
     */
    @Override
    public  List<SysDictData> selectList(SysDictDataQueryDTO dto) {
//        IPage<SysDictData> page = new Page<>(dto.getPageNum(), dto.getPageSize());
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        if (dto.getDictType() != null&&dto.getDictType()!="") {
            queryWrapper.eq(SysDictData::getDictType, dto.getDictType());
        }
        if (dto.getDictLabel() != null&&dto.getDictLabel()!="") {
            queryWrapper.like(SysDictData::getDictLabel, dto.getDictLabel());
        }
        if (dto.getStatus() != null&&dto.getStatus()!="") {
            queryWrapper.eq(SysDictData::getStatus, dto.getStatus());
        }
        List<SysDictData> list = sysDictDataMapper.selectList(queryWrapper);
//        IPage<SysDictData> dictDataIPage = sysDictDataMapper.selectPage(page, queryWrapper);
//        PageResult<SysDictData> pageResult = new PageResult<>();
//        pageResult.setTotal(dictDataIPage.getTotal());
//        pageResult.setRows(dictDataIPage.getRecords());
//        pageResult.setCode(pageResult.getRows()!=null?0:1);
        return list;
    }

    /**
     * 新增字典数据
     *
     * @param dto 前端传的参数
     */
    @Override
    public void insert(SysDictDataAddDTO dto) {
        SysDictData sysDictData = BeanUtil.toBean(dto, SysDictData.class);
        this.save(sysDictData);
    }

    /**
     * 查询字典数据的详细信息
     *
     * @param dictCode
     * @return
     */
    @Override
    public SysDictData selectByDictCode(Integer dictCode) {
        return this.lambdaQuery().eq(SysDictData::getDictCode, dictCode).one();
    }

    /**
     * 修改字典数据
     */
    @Override
    public void updateData(SysDictData sysDictData) {
        this.updateById(sysDictData);
    }

    /**
     * 批量删除字典数据
     *
     * @param dictCodes
     */
    @Override
    public void deleteByDictCodes(String[] dictCodes) {
        this.removeByIds(Arrays.asList(dictCodes));
    }
}
